import { defineStore } from 'pinia'
import { ref } from 'vue'
import type { User } from '@/types/user'

export const useUserStore = defineStore(
  'user',
  () => {
    // 用户信息store
    // 知识点【TS类型提示】：定义泛型最好精确，少用联合泛型，比如写成 User|'', 这样会导致使用这个变量的时候，因为类型不确定触发不了类型提示
    const user = ref<User>()

    const setUser = (u: User) => {
      user.value = u
    }
    const getUser = () => {
      return user.value
    }
    const clearUser = () => {
      // 知识点【清空数据undefined】：清空内容推荐使用undefined，而不是'',因为后者不符合User类型，而前者符合施
      user.value = undefined
    }

    return { user, setUser, getUser, clearUser }
  },
  {
    persist: true,
  },
)
